package com.hejing.异常处理方式1_try_catch;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.InputMismatchException;
import java.util.Scanner;

/**
 * ClassName: ExceptionHandle
 * Package: com.hejing.异常处理方式1_try_catch
 * Description:
 *
 * @Author: HeJing
 * @Create: 2023-04-09 20:49
 * @Version: 1.0
 */
public class ExceptionHandleTest {
    public static void main(String[] args){

        // 异常的基本流程测试
        // test01();

        // 测试catch中异常处理的方式
        // test02();

        // 处理编译时异常
        test03();

    }

    /**
     * 异常的基本流程测试:
     */
    public static void test01() {
        try{
            // Junit是自动化的测试，手动的输出会导致一直阻塞，也就是说junit不支持手动输入，否则会导致当前线程一直阻塞，
            // 转圈圈，所以test类不要用scanner那种控制台手动输入数据的方式，把数据直接写成形参，测试的时候直接写成参数测试吧；
            Scanner scanner = new Scanner(System.in);
            System.out.print("请输入一个数字: ");
            int num = scanner.nextInt();
            System.out.println(num);
        } catch (InputMismatchException e){
            System.out.println("出现了 InputMismatchException的异常");
        } catch(NullPointerException e){
            System.out.println("出现了NullPointerException的异常");
        } catch(RuntimeException e) {
            System.out.println("出现了RuntimeException的异常");
        }
        System.out.println("异常处理结束");
    }


    /**
     * 测试catch中异常处理的方式
     */
    public static void test02() {
        try{
            String str = "123";
            str = "abc";
            int i = Integer.parseInt(str);
            System.out.println(i);
        } catch(NumberFormatException e){
            // e.printStackTrace();
            System.out.println(e.getMessage());
        }
        System.out.println("程序结束");
    }

    /**
     * 处理编译时异常
     */
    public static void test03() {
        try{
            File file = new File("D:\\HeJing_Java\\test\\hello.txt");
            FileInputStream fis = new FileInputStream(file);  // 可能报 FileNotFoundException

            int data = fis.read();  // 可能报 IOException
            while(data != -1){
                System.out.print((char)data);
                data = fis.read();  // 可能报 IOException
            }
            fis.close();
        } catch(FileNotFoundException e){
            e.printStackTrace();
        } catch(IOException e) {
            e.printStackTrace();
        }
        System.out.println("异常处理结束");

    }
}
























